package Day_0207.Redis;

/**
 * @author zxc
 * @date 2023/02/07 21:59
 **/
public class Redis_MQ {
    public static void main(String[] args) {
        /**
         * 如何使用Redis来实现消息队列？
         * ===》
         * 1.一般使用 list 数据结构作为队列， rpush 生产消息， lpop 消费消息。
         * 当 lpop 没有消息的时候，要适当sleep 一会再重试。
         *
         * 2.面试官可能会问可不可以不用 sleep 呢？
         * list 还有个指令叫 blpop ，在没有消息的时候，它会阻塞住直到消息到来。
         *
         * 3.面试官可能还问能不能生产一次消费多次呢？
         * 使用 pub / sub 主题订阅者模式，可以实现 1:N的消息队列。
         *
         * 4.面试官可能还问 pub / sub 有什么缺点？
         * 在消费者下线的情况下，生产的消息会丢失，得使用专业的消息队列如 rabbitmq 等。
         *
         * 5.面试官可能还问 Redis 如何实现延时队列？
         * 使用sortedset ，拿时间戳作为 score ，消息内容作为 key 调用 zadd 来生产消息，
         * 消费者用zrangebyscore 指令获取 N 秒之前的数据轮询进行处理。
         *
         */
    }
}
